/**
 * @author Administrator
 * 这个是一个飞行器控制器
 */
 package kgame5.kgu {

public class FlyerController {
//	//_________________Property_____________________
//	private var md:Model;
//	
//	private var 
//		levelX:Number=0,//X方向的档,取值为1,2
//		levelZ:Number=0;//Z方向的档
//	
//	
//	
//	//这个是可以在外部设置的
//	public var 
//		SpeedZBasic:Number=0,//z方向的基础速度
//		
//		LevelX_2_OPDUR:Number=4,//持续按住多长时间才变档
//		LevelZ_2_OPDUR:Number=4,//持续按住多长时间才变档
//		
//		LevelX_1_Speed:Number=6,//1档的情况下的速度x
//		LevelX_2_Speed:Number=12,//2档的情况下的速度
//		
//		LevelX_2_Acc:Number=1,//2档情况下均匀的加到指定速度
//		
//		LevelX_1_Rot:Number=15,//1
//		LevelX_2_Rot:Number=30,//1
//		
//		LevelZ_1_Speed:Number=6,//1档的情况下的速度x
//		LevelZ_2_Speed:Number=12,//1档的情况下的速度z
//		
//		LevelZ_2_Acc:Number=1;//2档情况下均匀的加到指定速度
//		
//	private var opDurX:Number=0;//X方向按键时间
//	private var opDurZ:Number=0;//Z方向按键时间
//	
//	
//	
//	//让速度平滑的过度到目标速度
//	private var 
//		aimRotZ:Number=0,//左右飞行的是否机体也旋转，这个是要他平滑的旋转到目标
//		aimVX:Number=0,
//		aimVZ:Number=0;
//		
//	//处理从-1直接到1了或者从1直接到-1了
//	private var 
//		preDirX:Number=0,
//		preDirZ:Number=0;
//	//_________________Method_____________________
//	public function FlyerController(){
//	}
//	
//	//需要绑定一个目标
//	public function bindModel(p_md:Model){
//		md=p_md;
//	}
//	//如果目标死了或者是消失了就要释放掉
//	public function releaseModel(){
//		md=null;
//	}
//	
//	//==========这两个函数是每个周期都要调用的，fly(0)表示没有命令移动
//	//dir:1为正方向，-1为负方向,0为没有输入
//	//在x轴上左右移动
//	
//	public function flyX(dir:Number){
//		//0,处理两个按键都按的情况,就是从-1直接到1了或者从1直接到-1了
//		if(preDirX!=0&&dir!=preDirX){
//			dir=0;
//		}
//		preDirX=dir;
//		
//		//1,计算按下的时间，取得档次
//		if(dir==0){
//			opDurX=0;
//			levelX=0;
//		}else{//dir==-1或dir==1
//			
//			
//			if(opDurX<this.LevelX_2_OPDUR){
//				opDurX++;
//				if(opDurX>=this.LevelX_2_OPDUR){
//					//切换到2档
//					levelX=2;
//				}else{
//					levelX=1;
//				}
//			}
//		}
//		
//		//2,根据档位来控制运动
//		switch(levelX){
//			case 0:
//				aimVX=0;
//				md.v3d_v.x=0;
//				aimRotZ=0;
//			break;
//			case 1:
//				//直接设置速度
//				md.v3d_v.x=dir*this.LevelX_1_Speed;
//				
//				aimRotZ=-dir*this.LevelX_1_Rot;
//			break;
//			case 2:
//				//匀加速到目标
//				aimVX=dir*this.LevelX_2_Speed;
//				md.v3d_v.x=MathDG.W(md.v3d_v.x,aimVX,this.LevelX_2_Acc);
//				
//				aimRotZ=-dir*this.LevelX_2_Rot;
//			break;
//		}
//		
//		//3,实现运动
//		//移动
//		md.v3d_p.x+=md.v3d_v.x;
//		//旋转
//		md.v3d_r.z=MathDG.Spring(md.v3d_r.z,aimRotZ,3);
//	}
//	//dir:1为正方向，-1为负方向,0为没有输入
//	//在z轴上左右移动
//	public function flyZ(dir:Number){
//		//0,处理两个按键都按的情况,就是从-1直接到1了或者从1直接到-1了
//		if(preDirZ!=0&&dir!=preDirZ){
//			dir=0;
//		}
//		preDirZ=dir;
//		
//		//1,计算按下的时间，取得档次
//		if(dir==0){
//			opDurZ=0;
//			levelZ=0;
//		}else{
//			if(opDurZ<this.LevelZ_2_OPDUR){
//				opDurZ++;
//				if(opDurZ>=this.LevelZ_2_OPDUR){
//					//切换到2档
//					levelZ=2;
//				}else{
//					levelZ=1;
//				}
//			}
//		}
//		
//		//2,根据档位来控制运动
//		switch(levelZ){
//			case 0:
//				md.v3d_v.z=0;
//				aimVZ=0;
//			break;
//			case 1:
//				md.v3d_v.z=dir*this.LevelZ_1_Speed;//直接设置速度
//
//			break;
//			case 2:
//				//速度匀速加到目标速度
//				aimVZ=dir*this.LevelZ_2_Speed;
//				md.v3d_v.z=MathDG.W(md.v3d_v.z,aimVZ,this.LevelZ_2_Acc);
//				
//			break;
//		}
//		
//		//3,实现运动
//		//移动
//		md.v3d_p.z+=md.v3d_v.z+SpeedZBasic;
//		
//	}
}
}